/*
 * Copyright 2010 Brendan Kenny
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package gwt.ns.webworker.client;

/**
 * Interface implemented by classes that can create a platform appropriate
 * Web Worker. Use a {@link WorkerModuleDef} annotation to specify what Worker
 * module should be compiled and returned. Typical usage:
 * 
 * <p><code>@WorkerModuleDef("pkg1.pkg2.ModuleName")<br>
 * interface MyWorkerFactory extends WorkerFactory { }<br>
 * ...<br>
 * MyWorkerFactory factory = GWT.create(MyWorkerFactory.class);<br>
 * Worker myWorker = factory.createAndStart();</code></p>
 */
public interface WorkerFactory {
	/**
	 * @return A running Worker object
	 */
	public Worker createAndStart();
}
